package com.sunch.service.impl;

import com.sunch.mapper.UserMapper;
import com.sunch.pojo.Home;
import com.sunch.pojo.Room;
import com.sunch.pojo.User;
import com.sunch.service.UserService;
import com.sunch.utils.Result;
import com.sunch.utils.UserHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.View;

import java.util.List;


@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 根据用户名和密码校验登录
     * @param user
     * @return
     */
    public User login(User user) {
        return userMapper.getByLoginNameAndPassword(user);
    }

    /**
     * 根据用户名和密码注册用户
     * @param user
     * @return
     */

    public Result register(User user) {
        //1.根据用户名判断该用户是否存在
        User u = userMapper.getByLoginName(user);
        if(u == null) {
            //2.不存在执行插入语句
            userMapper.insertByNameAndPassword(user);
            return Result.success();
        }
        //3.存在，返回该用户已经存在
        return Result.error("该用户已存在");
    }

    /**
     * 添加房间
     * @param home
     * @return
     */
    public Result addHome(Home home) {
        //查询是否是第一个家庭，如果是，将当前家设为默认家庭
        List<Home> homeList = userMapper.getMyHome(UserHolder.getUser().getId());
        if(homeList == null) {
            home.setDefaultHome(1);//登进去优先展示的家
        }
        userMapper.addHome(home);
        return Result.success();
    }
    /**
     * 获取当前用户所有家庭
     * @param userId
     * @return
     */
    public List<Home> getHome(int userId) {
        return userMapper.getMyHome(userId);
    }
    /**
     * 添加房间
     * @param room
     * @return
     */
    public Result<Room> addRoom(Room room) {
        //先查询是否选择家，如果没有选择家，则提示"还未选择家",就是判断当前用户有不有家
        List<Home> myHome = userMapper.getMyHome(UserHolder.getUser().getId());
        if(myHome != null && myHome.size() > 0) {
            //给当前的家添加房间，也就是defaultHome为1的房间
            for (Home home : myHome) {
                if(home.getDefaultHome() == 1){
                    room.setHomeId(home.getId());
                    break;
                }
            }
        }else {
            return Result.error("还未选择家");
        }
        room.setUserId(UserHolder.getUser().getId());
        //选择后，则允许添加新的房间
        userMapper.addRoom(room);
        return Result.success();
    }
    /**
     *根据用户id和当前选择的家查询所有房间
     * @param userId
     */
    public Result<List<Room>> getRooms(int userId) {

        //1.如果当前还没选择家，则返回“还没添加家”
        List<Home> myHome = userMapper.getMyHome(userId);
        if(myHome == null) {
            return Result.error("还未添加家");
        }
        //2.查询当前家的房间
        //2.1先知道哪个家是被选择的，再根据这个家的主键id查询所有房间
        int homeId = 1; //只要有房间，必定有defaultHome=1的房间
        for (Home home : myHome) {
            if(home.getDefaultHome() == 1){
                homeId = home.getId();
                break;
            }
        }
        List<Room> roomList = userMapper.getMyRoom(userId,homeId);
        return Result.success(roomList);
    }
}
